package com.bruce.tool.pay.alipay.app.to;

import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;

import java.io.Serializable;

/**
 * @author Bruce(刘正航)
 */
@Data
public class CallbackTo implements Serializable {
    /**
     * 通知的发送时间。格式为yyyy-MM-dd HH:mm:ss
     */
    @JSONField(name = "notify_time")
    private String notifyTime;
    /**
     * 通知的类型
     */
    @JSONField(name = "notify_type")
    private String notifyType;
    /**
     * 通知校验ID
     */
    @JSONField(name = "notify_id")
    private String notifyId;
    /**
     * 支付宝分配给开发者的应用Id
     */
    @JSONField(name = "app_id")
    private String appId;
    /**
     * 编码:编码格式，如utf-8、gbk、gb2312等
     */
    private String charset;
    /**
     * 调用的接口版本，固定为：1.0
     */
    private String version;
    /**
     * 商户生成签名字符串所使用的签名算法类型，目前支持RSA2和RSA，推荐使用RSA2
     */
    @JSONField(name = "sign_type")
    private String signType;
    /**
     * 验签对应的签名串
     */
    private String sign;
    /**
     * 支付宝交易凭证号
     */
    @JSONField(name = "trade_no")
    private String tradeNo;
    /**
     * 原支付请求的商户订单号
     */
    @JSONField(name = "out_trade_no")
    private String outTradeNo;
    /**
     * 商户业务ID，主要是退款通知中返回退款申请的流水号
     */
    @JSONField(name = "out_biz_no")
    private String outBizNo;
    /**
     * 买家支付宝账号对应的支付宝唯一用户号。以2088开头的纯16位数字
     */
    @JSONField(name = "buyer_id")
    private String buyerId;
    /**
     * 买家支付宝账号
     */
    @JSONField(name = "buyer_logon_id")
    private String buyerLogonId;
    /**
     * 卖家支付宝用户号
     */
    @JSONField(name = "seller_id")
    private String sellerId;
    /**
     * 卖家支付宝账号
     */
    @JSONField(name = "seller_email")
    private String sellerEmail;
    /**
     * 交易目前所处的状态
     */
    @JSONField(name = "trade_status")
    private String tradeStatus;
    /**
     * 本次交易支付的订单金额，单位为人民币（元）
     */
    @JSONField(name = "total_amount")
    private String totalAmount;
    /**
     * 商家在交易中实际收到的款项，单位为元
     */
    @JSONField(name = "receipt_amount")
    private String receiptAmount;
    /**
     * 用户在交易中支付的可开发票的金额
     */
    @JSONField(name = "invoice_amount")
    private String invoiceAmount;
    /**
     * 用户在交易中支付的金额
     */
    @JSONField(name = "buyer_pay_amount")
    private String buyerPayAmount;
    /**
     * 使用集分宝支付的金额
     */
    @JSONField(name = "point_amount")
    private String pointAmount;
    /**
     * 退款通知中，返回总退款金额，单位为元，支持两位小数
     */
    @JSONField(name = "refund_fee")
    private String refundFee;
    /**
     * 商品的标题/交易标题/订单标题/订单关键字等，是请求时对应的参数，原样通知回来
     */
    @JSONField(name = "subject")
    private String subject;
    /**
     * 该订单的备注、描述、明细等。对应请求时的body参数，原样通知回来
     */
    @JSONField(name = "body")
    private String body;
    /**
     * 该笔交易创建的时间。格式为yyyy-MM-dd HH:mm:ss
     */
    @JSONField(name = "gmt_create")
    private String gmtCreate;
    /**
     * 该笔交易的买家付款时间。格式为yyyy-MM-dd HH:mm:ss
     */
    @JSONField(name = "gmt_payment")
    private String gmtPayment;
    /**
     * 该笔交易的退款时间。格式为yyyy-MM-dd HH:mm:ss.S
     */
    @JSONField(name = "gmt_refund")
    private String gmtRefund;
    /**
     * 该笔交易结束时间。格式为yyyy-MM-dd HH:mm:ss
     */
    @JSONField(name = "gmt_close")
    private String gmtClose;
    /**
     * 支付成功的各个渠道金额信息: [{"amount":"15.00","fundChannel":"ALIPAYACCOUNT"}]
     */
    @JSONField(name = "fund_bill_list")
    private String fundBillList;
    /**
     * 公共回传参数，如果请求时传递了该参数，则返回给商户时会在异步通知时将该参数原样返回。本参数必须进行UrlEncode之后才可以发送给支付宝
     * merchantBizType%3d3C%26merchantBizNo%3d2016010101111
     */
    @JSONField(name = "passback_params")
    private String passbackParams;
    /**
     * 本交易支付时所使用的所有优惠券信息
     * [{"amount":"0.20","merchantContribute":"0.00","name":"一键创建券模板的券名称","otherContribute":"0.20","type":"ALIPAY_DISCOUNT_VOUCHER","memo":"学生卡8折优惠"]
     */
    @JSONField(name = "voucher_detail_list")
    private String voucherDetailList;
}
